home *** CD-ROM | disk | FTP | other *** search
/ FM Towns: Free Software Collection 7 / FM Towns Free Software Collection 7.iso / taropyon / hewin / ccisrc / ntmdial.cci < prev    next >
Text File  |  1993-11-30  |  6KB  |  229 lines

  1. /*************************************************************************
  2. *    ダイアル処理
  3. *************************************************************************/
  4.  
  5. int        NtmDialArgp   = 0;
  6. int        NtmDialArgc   = 0;
  7. char    **NtmDialArgv = NULL;
  8. int        NtmDialCount  = 0;
  9.  
  10. #define    NTM_NG_SYSTEM            (0)    /* システムグループ    */
  11.  
  12. #define    NTM_NL_NOHING            (0)
  13. #define    NTM_NL_MODEMCMD_1        (1)
  14. #define    NTM_NL_MODEMCMD_2        (2)
  15. #define    NTM_NL_CONNECT_CHK    (3)
  16. #define    NTM_NL_BUSY_WAIT        (4)
  17. #define    NTM_NL_NO_CARRIER        (6)
  18. #define    NTM_NL_CONNECT        (10)
  19.  
  20. int        ntm_dialWork_clear()
  21. {
  22.     if ( NtmDialArgc && NtmDialArgc )
  23.         FS_argClear( NtmDialArgc, NtmDialArgv );
  24.     NtmDialArgp = 0;
  25.     NtmDialArgc = 0;
  26.     NtmDialArgv = NULL;
  27.     NtmDialCount = 0;
  28. }
  29.  
  30. int        ntm_dial_dial( char *ntm )
  31. {
  32.     if ( NtmDialArgp >= NtmDialArgc )
  33.         NtmDialArgp = 0;
  34.  
  35. #if    0
  36.     NTM_rsPuts(ntm, "ATD");
  37.     NTM_rsPuts(ntm, NtmDialArgv[NtmDialArgp]  );
  38.     NTM_rsPuts(ntm, "\r" );
  39. #else
  40.     NTM_navi_send( ntm, 1, "ATD%s\r", NtmDialArgv[NtmDialArgp] );
  41. #endif
  42.     ++NtmDialCount;
  43.  
  44.     NtmSetNaviLevel( ntm, NTM_NL_CONNECT_CHK );
  45.     NTM_navi_setTimeLimit( ntm, 30, NULL );
  46.  
  47.     return (NORMAL);
  48. }
  49.  
  50. /*************************************************************************
  51. *    タイムオーバーチェック用関数
  52. *************************************************************************/
  53.  
  54. int        ntm_dialNavi_timeover( char *ntm )
  55. {
  56.     switch ( NtmGetNaviLevel(ntm) )
  57.     {
  58.         case NTM_NL_BUSY_WAIT:    /* ダイアルBUSY待ち    */
  59.             NtmSetNaviLevel( ntm, NTM_NL_NOHING );
  60.             NTM_navi_setTimeLimit( ntm, 30, NULL );
  61.             ntm_dial_dial( ntm );
  62.             break;
  63.  
  64.         default:
  65.             NtmAutoNavigationOff( ntm );    /* ナビゲーション無効    */
  66.             ntm_dialWork_clear();
  67.     }
  68.     return (0);
  69. }
  70.  
  71. /*************************************************************************
  72. *    "OK" チェック
  73. *************************************************************************/
  74.  
  75. int        ntm_dialNavi_ok( char *ntm, char *s, int no, char *ptr )
  76. {
  77.     char    *center;
  78.     char    *cmd;
  79.  
  80.     center = NtmGetCenterPtr(ntm);
  81.     switch ( NtmGetNaviLevel(ntm) )
  82.     {
  83.         case NTM_NL_MODEMCMD_1:    /* 第1モデム初期化コマンド */
  84.             if ( center )
  85.             {
  86.                 cmd = NtmCenterGetModem2(center);
  87.                 if ( cmd[0] != '\0' )
  88.                 {
  89. #if    0
  90.                     NTM_rsPuts(ntm,cmd);
  91.                     NTM_rsPuts(ntm,"\r");
  92. #else
  93.                     NTM_navi_send( ntm, 1, "%s\r", cmd  );
  94. #endif
  95.                     NtmSetNaviLevel( ntm, NTM_NL_MODEMCMD_2 );
  96.                     NTM_navi_setTimeLimit( ntm, 30, NULL );
  97.                     break;
  98.                 }
  99.             } /* else / else 第2モデム初期化コマンドチェック後の処理へ    */
  100.  
  101.         case NTM_NL_MODEMCMD_2:    /* 第2モデム初期化コマンド */
  102.             /* ダイアル    */
  103.             ntm_dial_dial( ntm );
  104.             break;
  105.         default:
  106.             return (0);
  107.     }
  108.     return (-1);
  109. }
  110.  
  111. /*************************************************************************
  112. *    "CONNECT"
  113. *************************************************************************/
  114.  
  115. int        ntm_dialNavi_connect( char *ntm, char *s, int no, char *ptr )
  116. {
  117.     switch ( NtmGetNaviLevel(ntm) )
  118.     {
  119.         case NTM_NL_CONNECT_CHK:            /* 接続成功    */
  120.             NTM_navi_msgPrintf(ntm,"<<<<< CONNECT >>>>>");
  121.             NtmAutoNavigationOff( ntm );    /* ナビゲーション無効    */
  122.             NtmSetNaviLevel( ntm, NTM_NL_CONNECT );
  123.             NTM_navi_setTimeLimit( ntm, 0, NULL );
  124.             ntm_dialWork_clear();
  125.  
  126.             NTM_online( ntm );    /* 接続    */
  127.             break;
  128.  
  129.         default:
  130.             return (0);
  131.     }
  132.     return (-1);
  133. }
  134.  
  135. /*************************************************************************
  136. *    "BUSY"
  137. *************************************************************************/
  138.  
  139. int        ntm_dialNavi_busy( char *ntm, char *s, int no, char *ptr )
  140. {
  141.     switch ( NtmGetNaviLevel(ntm) )
  142.     {
  143.         case NTM_NL_CONNECT_CHK:
  144.             NTM_navi_msgPrintf(ntm,"<<<<< BUSY >>>>>");
  145.             ++NtmDialArgp;
  146.             NtmSetNaviLevel( ntm, NTM_NL_BUSY_WAIT );
  147.             NTM_navi_setTimeLimit( ntm, 5, NULL );
  148.             break;
  149.  
  150.         default:
  151.             return (0);
  152.     }
  153.     return (-1);
  154. }
  155.  
  156. /*************************************************************************
  157. *    "NO CARRIER"
  158. *************************************************************************/
  159.  
  160. int        ntm_dialNavi_no_carrier( char *ntm, char *s, int no, char *ptr )
  161. {
  162.     int        level;
  163.  
  164.     level = NtmGetNaviLevel(ntm);
  165.     if ( level < 300 )
  166.     {
  167.         NTM_navi_msgPrintf(ntm,"<<<<< NO CARRIER >>>>>");
  168.         NtmSetNaviLevel( ntm, NTM_NL_NO_CARRIER );
  169.         NtmAutoNavigationOff( ntm );    /* ナビゲーション無効    */
  170.         ntm_dialWork_clear();
  171.         return (-1);
  172.     } else
  173.         return (0);
  174. }
  175.  
  176. /*************************************************************************
  177. *    ダイアル
  178. *-------------------------------------------------------------------------
  179. *    タイムオーバー処理関数は予め登録しておくこと
  180. *************************************************************************/
  181.  
  182. int        ntm_dialStart2( char *ntm, char *tel, char *connectFunc, char *noCarrierFunc )
  183. {
  184.     char    *center;
  185.     char    *cmd;
  186.  
  187.     ntm_dialWork_clear();
  188.  
  189.     if ( tel == NULL || tel[0] == '\0' )
  190.     {
  191. TEL_ERR:
  192.         DLG_tmpMsgTime( DLGPOS_MOS_SET_CENTER, DLGPOS_MOS_SET_CENTER,
  193.             C_MBLACK, C_DLGBASE, COLMIX(C_ERROR,C_GRAY),
  194.             AplErrMsgTime, "    電話番号が指定されていません。  " );
  195.         return (ERR);
  196.     }
  197.     NtmDialArgc = FS_argSet( tel, &NtmDialArgv );
  198.     if ( NtmDialArgc < 1 )
  199.         goto TEL_ERR;
  200.  
  201.     /* ナビゲーションワーク設定    */
  202.     NTM_navi_setFunc( ntm, NTM_NG_SYSTEM, 1, "^OK\r"        , 0, "ntm_dialNavi_ok"   , NULL );
  203.     NTM_navi_setFunc( ntm, NTM_NG_SYSTEM, 1, "^CONNECT.*\r" , 0, connectFunc         , NULL );
  204.     NTM_navi_setFunc( ntm, NTM_NG_SYSTEM, 1, "^BUSY"        , 0, "ntm_dialNavi_busy" , NULL );
  205.     NTM_navi_setFunc( ntm, NTM_NG_SYSTEM, 1, "^NO CARRIER"  , 0, noCarrierFunc       , NULL );
  206.     NtmSetNaviLevel( ntm, NTM_NL_MODEMCMD_1 );
  207.     NtmSetNaviGroup( ntm, NTM_NG_SYSTEM );
  208.     NtmAutoNavigationOn( ntm );    /* ナビゲーション有効    */
  209.     NTM_navi_msgPrintf(ntm,"<<<<< NAVIGATER START >>>>>");
  210.  
  211.     if ( (center = NtmGetCenterPtr(ntm)) == NULL )
  212.     {
  213.         cmd = NULL;
  214.     } else
  215.     {
  216.         cmd = NtmCenterGetModem1(center);
  217.         if ( cmd[0] == '\0' )
  218.             cmd = NULL;
  219.     }
  220.  
  221.     if ( cmd )
  222.         NTM_rsPuts(ntm,cmd);
  223.     else
  224.         NTM_rsPuts(ntm,"ATZ");
  225.     NTM_rsPuts(ntm,"\r");
  226.  
  227.     return (NORMAL);
  228. }
  229.